package model

import (
	"time"

	"gorm.io/gorm"
)

// Warehouse 仓库
// @Description 仓库信息
// @Success 200 {object} common.Response{data=Warehouse} "成功"
// @Failure 400 {object} common.Response "请求错误"
// @Failure 500 {object} common.Response "内部错误"
// @Router /warehouse [get]
type Warehouse struct {
	ID        uint           `json:"id" gorm:"primarykey"`
	CreatedAt time.Time      `json:"created_at"`
	UpdatedAt time.Time      `json:"updated_at"`
	DeletedAt gorm.DeletedAt `json:"-" gorm:"index"`
	Code      string         `gorm:"type:varchar(50);uniqueIndex;not null" json:"code"` // 仓库编码
	Name      string         `gorm:"type:varchar(100);not null" json:"name"`            // 仓库名称
	Type          string   `gorm:"type:varchar(50);not null;default:'常温'" json:"type"`           // 仓库类型: 常温, 冷藏, 冷冻 (从前端接收)
	Area          *float64 `gorm:"type:decimal(10,2);default:null" json:"area"`           // 面积 (平方米) - 使用指针允许为 NULL
	Capacity      *int     `gorm:"type:int;default:null" json:"capacity"`             // 容量 (例如托盘数) - 使用指针允许为 NULL
	MinTemperature *float64 `gorm:"type:decimal(5,1);default:null" json:"min_temperature"` // 最低温度 (摄氏度) - 使用指针允许为 NULL
	MaxTemperature *float64 `gorm:"type:decimal(5,1);default:null" json:"max_temperature"` // 最高温度 (摄氏度) - 使用指针允许为 NULL
	MinHumidity    *float64 `gorm:"type:decimal(4,1);default:null" json:"min_humidity"`    // 最低湿度 (%) - 使用指针允许为 NULL
	MaxHumidity    *float64 `gorm:"type:decimal(4,1);default:null" json:"max_humidity"`    // 最高湿度 (%) - 使用指针允许为 NULL
	Remark    string         `gorm:"type:varchar(500)" json:"remark"`                   // 备注
	Status    int            `gorm:"type:tinyint;not null;default:1" json:"status"`     // 状态：1-启用 0-禁用 (注意：前端用的 true/false, 后端用的 1/0)
}

// Location 货位
// @Description 货位信息
// @Success 200 {object} common.Response{data=Location} "成功"
// @Failure 400 {object} common.Response "请求错误"
// @Failure 500 {object} common.Response "内部错误"
// @Router /location [get]
type Location struct {
	ID          uint           `json:"id" gorm:"primarykey"`
	CreatedAt   time.Time      `json:"created_at"`
	UpdatedAt   time.Time      `json:"updated_at"`
	DeletedAt   gorm.DeletedAt `json:"-" gorm:"index"`
	WarehouseID uint           `gorm:"not null;index" json:"warehouse_id"`                // 所属仓库ID
	Code        string         `gorm:"type:varchar(50);uniqueIndex;not null" json:"code"` // 货位编码
	Name        string         `gorm:"type:varchar(100)" json:"name"`                     // 货位名称 (允许为空, 可以默认等于 Code)
	Type        string         `gorm:"type:varchar(50);not null;default:'存储区'" json:"type"` // 货位类型: 存储区, 收货区, 发货区, 拣货区, 暂存区 等 (使用字符串)
	Area        string         `gorm:"type:varchar(50)" json:"area"`                      // 所属区域 (可选)
	Shelf       string         `gorm:"type:varchar(50)" json:"shelf"`                     // 货架号 (可选)
	Level       string         `gorm:"type:varchar(50)" json:"level"`                     // 层号 (可选)
	Capacity    *int           `gorm:"type:int;default:null" json:"capacity"`             // 容量 (可选, 使用指针允许 NULL)
	Remark      string         `gorm:"type:varchar(500)" json:"remark"`                   // 备注
	Status      int            `gorm:"type:tinyint;not null;default:1" json:"status"`     // 状态：1-启用 0-禁用
}
